"""
API 中间件
"""
from django.utils.deprecation import MiddlewareMixin


class DisableCSRFForAPIMiddleware(MiddlewareMixin):
    """
    为 API 路由禁用 CSRF 检查
    因为 API 使用 JWT 认证，不需要 CSRF 保护
    """

    def process_request(self, request):
        # 如果是 API 路由，设置 CSRF 豁免标记
        if request.path.startswith('/api/'):
            setattr(request, '_dont_enforce_csrf_checks', True)
        return None

    def process_view(self, request, view_func, view_args, view_kwargs):
        # 在视图处理之前再次确认 CSRF 豁免
        if request.path.startswith('/api/'):
            setattr(request, '_dont_enforce_csrf_checks', True)
        return None

